GHCのUnboxed typesとprimitive値
#WIP
GHCの文脈での「Unboxed」とか「primitive」が指す意味
Haskell自身で定義できないものという意味
コンパイラが直接提供しているという意味でのprimitive
「Haskellの標準関数」などの意味ではない
例えば、IO型とかはどこからもimportできるが、これは別にprimitiveではない
primitive値の全てはGHC.Extsからexportされている
他のmodule内で定義されて再exportされているものもある
例えばIntの値コンストラクタI#はGHC.Types内で定義されている
GHC.Extsをimportすれば、一般ユーザーも使うことができる
パフォーマンス観点とかでどうしても必要な場合にのみ使う
boxingされたものについて
GHCが提供する型の多くはboxingされている
suffixに#が付いていないもの全てなので、本当に多いmrsekut.icon
これらの値はヒープ領域に確保される
例えば、Intは2wordsのheap object
GHCのprimitive値
GHCのUnboxed types
関連
UnboxedTuples
UnboxedSums
https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/primitives.html#primitives
序盤だけ読んだmrsekut.icon
時間かけて読むと楽しそう